@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

rem 获取脚本所在的绝对路径目录
set "SCRIPT_REAL_PATH=%~dp0"
set "SCRIPT_REAL_PATH=%SCRIPT_REAL_PATH:~0,-1%"
set "VENV_DIR=%SCRIPT_REAL_PATH%\.venv"
set "CONFIG_FILE=%SCRIPT_REAL_PATH%\.xzimg_config"
set "SCRIPT_DIR=%SCRIPT_REAL_PATH%\scripts"
set "MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple"
set "VERSION=1.0.0"

rem 处理重置命令
if "%~1"=="-r" (
    echo 正在删除现有虚拟环境...
    if exist "%VENV_DIR%" (
        rmdir /s /q "%VENV_DIR%"
        echo 虚拟环境已删除
    ) else (
        echo 未找到现有虚拟环境
    )
    
    if exist "%CONFIG_FILE%" (
        del "%CONFIG_FILE%"
        echo 配置文件已删除
    )
    
    echo 即将重新创建虚拟环境...
    set "INITIALIZED=false"
    goto :init_env
)

rem 检查配置文件是否存在，并且initialized是否为true
set "INITIALIZED=false"
if exist "%CONFIG_FILE%" (
    for /f "tokens=1,* delims==" %%a in ('findstr "initialized" "%CONFIG_FILE%"') do (
        if "%%b"=="true" (
            set "INITIALIZED=true"
        )
    )
)

:init_env
if "%INITIALIZED%"=="false" (
    echo 首次执行，正在为您创建一个只用于本工具的Python虚拟环境...
    
    :: 检查Python是否安装
    where python >nul 2>nul
    if %ERRORLEVEL% neq 0 (
        echo 错误: 未找到Python，请先确保你的电脑上已经安装Python
        exit /b 1
    )
    
    :: 创建虚拟环境
    python -m venv "%VENV_DIR%"
    
    if %ERRORLEVEL% equ 0 (
        echo 虚拟环境创建成功！路径: %VENV_DIR%
        :: 创建配置文件标记已初始化
        echo initialized=true> "%CONFIG_FILE%"
        echo venv_path=%VENV_DIR%>> "%CONFIG_FILE%"
        echo created_date=%date% %time%>> "%CONFIG_FILE%"
        echo script_dir=%SCRIPT_DIR%>> "%CONFIG_FILE%"
        echo mirror_url=%MIRROR_URL%>> "%CONFIG_FILE%"

        :: 检查requirements.txt文件是否存在
        set "REQUIREMENTS_FILE=%cd%\requirements.txt"
        if exist "!REQUIREMENTS_FILE!" (
            echo 正在安装工具所需依赖...
            echo 这个过程会需要一点时间，等一会就好啦
            :: 激活虚拟环境并安装依赖
            call "!VENV_DIR!\Scripts\activate.bat"
            python -m pip install --upgrade pip
            :: 使用配置文件中的镜像源进行安装
            python -m pip install -r "!REQUIREMENTS_FILE!" -i "%MIRROR_URL%"
            
            if !ERRORLEVEL! equ 0 (
                echo 依赖安装成功！
            ) else (
                echo 依赖安装失败，请检查requirements.txt文件或手动安装
            )
            :: 退出虚拟环境
            call deactivate
        ) else (
            echo 未检测到requirements.txt文件，跳过依赖安装
        )
        
    ) else (
        echo 创建虚拟环境失败，请检查您的Python安装
        exit /b 1
    )
)

:: 获取虚拟环境路径
if exist "%CONFIG_FILE%" (
    for /f "tokens=1,* delims==" %%a in ('findstr "venv_path" "%CONFIG_FILE%"') do (
        set "VENV_PATH=%%b"
    )
)

:: 显示工具信息（当没有参数时）
if "%~1"=="" (
    if exist "%CONFIG_FILE%" (
        echo ✨欢迎使用星凪图片工具✨
        echo 当前版本%VERSION%
        echo 目前支持的工具有
        echo "1. 图片抠图(去除背景)"
        echo "2. 图片格式转换"
        echo "可以使用 xzimg --help 命令查看具体的用法"
        echo "也可以使用 xzimg <工具名字> --help 查看工具的详细用法"
        echo "卸载的话直接删除工具所在的文件夹就可以了，本工具所有的文件均在一个文件夹内"
        echo "卸载完毕后要记得修改你的环境变量"
        echo "✨工具持续更新中...✨"
    )
    exit /b 0
)

:: 处理帮助命令
if "%~1"=="--help" (
    echo xzimg - 图像处理工具
    echo.
    echo 用法: xzimg [命令] [参数]
    echo.
    echo 可用命令:
    echo   "koutu               执行抠图功能"
    echo   "format              执行格式转换功能"
    echo   "--help, -h          显示帮助信息"
    echo   "-r                  删除并重新创建虚拟环境"
    echo.
    echo 详细帮助:
    echo   "xzimg koutu --help    查看抠图功能的详细用法"
    echo   "xzimg format --help   查看格式转换功能的详细用法"
    echo.
    echo 环境信息:
    if exist "%CONFIG_FILE%" (
        echo   虚拟环境: %VENV_PATH%
        echo   脚本目录: %SCRIPT_DIR%
        for /f "tokens=1,* delims==" %%a in ('findstr "created_date" "%CONFIG_FILE%"') do (
            echo   创建日期: %%b
        )
        echo   版本: %VERSION%
    ) else (
        echo   尚未初始化环境
    )
    exit /b 0
)

:: 处理命令行参数
if "%~1"=="koutu" (
    set "KOUTU_SCRIPT=%SCRIPT_DIR%\koutu.py"
    
    if exist "!KOUTU_SCRIPT!" (
        :: 激活虚拟环境并执行脚本，将所有参数传递给Python脚本
        if exist "%VENV_PATH%" (
            call "%VENV_PATH%\Scripts\activate.bat"
            python "!KOUTU_SCRIPT!" %*
            set "RESULT=!ERRORLEVEL!"
            call deactivate
            exit /b !RESULT!
        ) else (
            echo 警告: 虚拟环境不存在，使用系统Python执行
            python "!KOUTU_SCRIPT!" %*
            exit /b %ERRORLEVEL%
        )
    ) else (
        echo 错误: koutu.py脚本不存在，请确保脚本位于 %SCRIPT_DIR% 目录下
        exit /b 1
    )
)

if "%~1"=="format" (
    set "FORMAT_SCRIPT=%SCRIPT_DIR%\format.py"
    
    if exist "!FORMAT_SCRIPT!" (
        :: 激活虚拟环境并执行脚本，将所有参数传递给Python脚本
        if exist "%VENV_PATH%" (
            call "%VENV_PATH%\Scripts\activate.bat"
            python "!FORMAT_SCRIPT!" %*
            set "RESULT=!ERRORLEVEL!"
            call deactivate
            exit /b !RESULT!
        ) else (
            echo 警告: 虚拟环境不存在，使用系统Python执行
            python "!FORMAT_SCRIPT!" %*
            exit /b %ERRORLEVEL%
        )
    ) else (
        echo 错误: format.py脚本不存在，请确保脚本位于 %SCRIPT_DIR% 目录下
        exit /b 1
    )
)

echo 未知命令: %1
echo 使用 'xzimg --help' 查看可用命令

endlocal